Amazon CloudFrontの独自ドメインSSL証明書をAWS CLIでアップロードする
はじめに
今回はCloudFrontで独自ドメインSSL証明書を使用するために AWS CLIで証明書をアップロードする方法を書きたいと思います。
以前、弊社のブログでも紹介していましたが「aws-iam-tools」での方法でしたので AWS CLI版の投稿となります。
CloudFrontの独自ドメインSSL証明書対応を試してみた | Developers.IO
証明書をアップロードする
ELBの証明書はコンソール上でもアップロード可能ですが、CloudFrontではコマンドラインでアップロードします。
$ aws iam upload-server-certificate --server-certificate-name CertificateName ¥ --certificate-body file://public_key_certificate_file ¥ --private-key file://privatekey.pem ¥ --certificate-chain file://certificate_chain_file ¥ --path /cloudfront/path/
--server-certificate-name CloudFrontの [SSL Certificate] リストに表示される名前
--certificate-body SSL証明書
--private-key 秘密鍵
--certificate-chain 中間証明書
--path 証明書のパス(「/cloudfront/」で始まり「/」で終わる必要があります)
実際にアップロードしてみます。今回は中間証明書は外しました。
$ aws iam upload-server-certificate --server-certificate-name hagehage-certificate ¥ --certificate-body file://public.crt ¥ --private-key file://private.key ¥ --path /cloudfront/dev/ { "ServerCertificateMetadata": { "ServerCertificateId": "ASCAJF2IKDRLN3BKS2UKQ", "ServerCertificateName": "hagehage-certificate", "Expiration": "2025-08-08T01:48:26Z", "Path": "/cloudfront/dev/", "Arn": "arn:aws:iam::xxxxxxxxxxxx:server-certificate/cloudfront/dev/hagehage-certificate", "UploadDate": "2015-08-11T10:25:26.418Z" } }
AWS CLIで証明書の確認
$ aws iam get-server-certificate --server-certificate-name hagehage-certificate { "ServerCertificate": { "CertificateBody": "-----BEGIN CERTIFICATE-----\nMIIDBjCCAe4CCQDIfhBKW+ifujANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJK\nUDETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0\ncyBQdHkgTHRkMB4XDTE1MDgxMTAxNDgyNloXDTI1MDgwODAxNDgyNlowRTELMAkG\nA1UEBhMCSlAxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0\nIFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\nAL4ISinC2Uv0LPWBzT1gPWP+9ZmCjSjxWKsFpC4usyc7yz4MH9Gr1U5AL2EvbytB\nFkbT6cVft6tG3R4XrLwoiwV9/svV2GikdSbYNz998378HKNVY0PmxjRnUExBMemc\n+INxNS45hKrP8i87ZojHZcSaVHYKxTkU0l7ySC4Izd/KF1Qk+q/F+aQOmWTVf+ZN\nEq9ut1c/53rlWSteXnov2GPRgZe0UxAKuLWBSbtSfQarKHlZtsKDs6jsOi/cOed6\noezLa7mx34lyLqdxw29wQf0AQIBmX1FhFljmlGPcLX1/IYR67ApIFmESN6JWXF7y\nDTiW3MlPAAqngH38IjZSQuUCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAI7AWCJ1i\np8Fm46YxzTzrQCoHO3UUzvPX2Mnfpi518eV3sokQUg+MZKuUEc5XRo8wPirMDzf6\nr3ITzoFAt8j9ffYK++hUDgRvOmvLKIjVTd/YGcexrAjODH6Otiavy3CGMQwmFELn\nla1JTQcBIR1sFZcGbH2EZjxbHaQLnJXZmRbTbavq+LM9St18l7TzcS7twrydSGz6\nmlx4QWMYuMQC/NT5EKcdFpl0RiyohAiLJ59ztT+LGeKyoAfEYtuK+b+uoQec1PPy\nDR8uQx1raUtoZa6QPwhMtvOM9r6yRSMFVrri0wJK7uvVh/U7L8w4aXGCYdUe1MRF\n4DKYvfRTNoxJcg==\n-----END CERTIFICATE-----", "ServerCertificateMetadata": { "ServerCertificateId": "ASCAJF2IKDRLN3BKS2UKQ", "ServerCertificateName": "hagehage-certificate", "Expiration": "2025-08-08T01:48:26Z", "Path": "/cloudfront/dev/", "Arn": "arn:aws:iam::xxxxxxxxxxxx:server-certificate/cloudfront/dev/hagehage-certificate", "UploadDate": "2015-08-11T10:25:26Z" } } }
CloudFront Distributionで確認
Distribution Settings の SSL Certificate
Custom SSL Certificate (stored in AWS IAM): で選択ができることが確認できます。
証明書関係のAWS CLI コマンド
証明書の一覧を確認
$ aws iam list-server-certificates { "ServerCertificateMetadataList": [ { "ServerCertificateId": "ASCAIQ5APJPGFDW5WR5EG", "ServerCertificateName": "test-20150409", "Expiration": "2016-04-08T04:50:33Z", "Path": "/", "Arn": "arn:aws:iam::xxxxxxxxxxxx:server-certificate/test-20150409", "UploadDate": "2015-04-09T04:53:16Z" }, { "ServerCertificateId": "ASCAIJFFQEOYR2OVAOY64", "ServerCertificateName": "test-20150707", "Expiration": "2025-07-04T10:30:57Z", "Path": "/", "Arn": "arn:aws:iam::xxxxxxxxxxxx:server-certificate/test-20150707", "UploadDate": "2015-07-07T10:32:11Z" }, { "ServerCertificateId": "ASCAJF2IKDRLN3BKS2UKQ", "ServerCertificateName": "hagehage-certificate", "Expiration": "2025-08-08T01:48:26Z", "Path": "/cloudfront/dev/", "Arn": "arn:aws:iam::xxxxxxxxxxxx:server-certificate/cloudfront/dev/hagehage-certificate", "UploadDate": "2015-08-11T10:25:26Z" } ] }
証明書の移動
$ aws iam update-server-certificate --server-certificate-name アップロードした証明書名 ¥ --new-path /cloudfront/path/
証明書の名前の変更
$ aws iam update-server-certificate --server-certificate-name アップロードした証明書名 ¥ --new-server-certificate-name 変更後の証明書名
証明書の削除
$ aws iam delete-server-certificate --server-certificate-name アップロードした証明書名
まとめ
CloudFrontで使用する独自ドメインSSL証明書をAWS CLIで証明書をアップロード、
証明書の削除やアップロードした証明書の名前の変更、移動などのAWS CLIでのコマンドを簡単に紹介いたしました。
AWSのドキュメントにもありますのでそちらも参考にしてみてください。